1. Technical Field
This invention generally relates to computer systems, and more specifically relates to apparatus and methods for efficient transmission of unaligned data over a bus in a computer system.
2. Background Art
In computer systems, data is often transferred between processors, memories, peripheral devices and other computer processor systems via an input/output (I/O) bus. Standardized buses are used in computer systems to provide a common I/O interface to peripherals across different platforms and different processors.
Standardized buses often suffer from problems of data alignment. Un-alignment occurs when a block of data bytes is not aligned to a word or double word boundary at the source and/or the destination. Such misalignment can incur significant processor or device overhead in shifting and/or masking the block of bytes during the transfer, at the source or at the destination. Data may be sent across the bus in aligned or unaligned transfers.
FIG. 2 shows a block diagram of a computer system according to the prior art. Computer system 200 includes a first processor 210 that is connected to a second processor 220. A bus interface 230 connects the first processor 210 to a bus 240. A second bus interface 250 connects the second processor 220 to the bus 240. The bus 240 transfers data packets of aligned data from the first processor 220 to the second processor 220. Data that originates as unaligned data is converted to multiple transfers of aligned data before being sent over the bus 240. This data conversion is typically done by the processor in store gathering operations.
In some computer systems data transfer is more efficient when sending the unaligned data. This sometimes occurs due to the overhead in sending serial data in multiple transfers. In a system where the data is sent unaligned to enhance throughput on the bus, on the same system it may be more efficient for the processor to receive aligned data or the receiver processor and/or hardware may be configured to require aligned data.
Without a method and apparatus for optimizing unaligned transfers of data between processors or other bus devices, the computer industry will continue to suffer from excessive delays in data transfer and/or reduced performance.